Networks of computers are commonly used to implement distributed data processing systems. In particular, the INTERNET has attained a widespread diffusion in the last years. The INTERNET is a network of networks connecting millions of computers with a decentralized design. The INTERNET has a client/server architecture, wherein server computers of the network support shared resources; client computers access the shared resources through the network.
The INTERNET also allows each client computer to interact dynamically with a server computer, in order to download and display information whose content changes each time it is provided by the server computer. This function is typically used for handling generation and distribution of reports resulting from database queries on the server computer.
A solution known in the art for delivering dynamic information in the INTERNET consists in running programs, for example designed to accept and return data conforming to the Common Gateway Interface (CGI), which perform a specific task on the server computer in response to a corresponding request received from the client computer. For example, the CGI program executes a query on a database of the server computer; each record resulting from the query is stored into a corresponding variable of the CGI program. A report is built on the server computer reading these variables and performing the appropriate manipulations. The report is then sent to the client computer ready to be displayed.
A drawback of the solution described above is that a data model employed by the data base of the server computer usually does not match with all the reports that can be generated by the server computer, so that a direct data access is not possible. In other words, the CGI program building the report cannot query a single table of the data base directly. Conversely, the CGI program must query different data base tables, in order to build a single row to be shown in a table of the report. This implies a dynamic memory allocation process to store the corresponding variables of the CGI program, since the number of records resulting from the queries is not known a priori. As a consequence, execution of the CGI program is prone to generate errors due to missing allocation of memory on the server computer.
Moreover, the CGI program running the query and building the report is quite complex. Therefore, execution of this program severely affects the performance of the server computer. This drawback is particularly acute in a high-availability server computer, to which a large number of requests for complex reports are submitted at the same time. In this case, the heavy exploitation of resources on the server computer increases its response time, thereby slowing down operation of the whole network.